home *** CD-ROM | disk | FTP | other *** search
- Path: newsbf02.news.aol.com!not-for-mail
- From: jkasunich@aol.com (JKasunich)
- Newsgroups: comp.lang.c++,rec.games.programmer,alt.msdos.programmer,comp.programming
- Subject: Re: Young programmers read me.
- Date: 19 Apr 1996 00:18:22 -0400
- Organization: America Online, Inc. (1-800-827-6364)
- Sender: root@newsbf02.news.aol.com
- Message-ID: <4l746e$m8r@newsbf02.news.aol.com>
- References: <3164B27B.71AC7F1E@dark.mountain.stronghold>
- Reply-To: jkasunich@aol.com (JKasunich)
- NNTP-Posting-Host: newsbf02.mail.aol.com
-
-
- Elsewhere in this thread, much has been said about how well,
- or how poorly, one language or another handles abstraction.
- My $0.02 on the subject:
-
- Every programming language is an abstraction, they just operate
- at different levels. I work on motor drives. The highest level of
- abstraction for this product is what the customer sees: a box
- with a START and STOP botton. He pushes the buttons, and
- the motor spins. He knows nothing else and is happy that way.
- Then you have the control engineer who sits next to me. He
- looks at the drive as a collection of algorithms that control the
- voltages, currents, and magnetic fields in the motor to make it
- generate torque. His view is much more detailed than the
- customer's, but still much simpler than the code that implements
- those algorithms. Next is the C code, followed by the assembly
- code that the compiler generates. Next you have CPU, memory,
- I/O devices, and so on. And below that, you have transistors and
- wires with voltages swinging from 0 volts to 5 volts and back.
-
- Each of these levels has its own 'best' language. The customer
- looks at the instruction manual, the control engineer looks at
- functional block diagrams, the programmers look at C and
- sometimes assembly code, and the hardware designer looks at
- hardware block diagrams and schematic diagrams.
-
- Arguments about which is the best level of abstraction are
- pointless. Any given problem may involve any or ALL of them.
- More than once, we have traced a problem seen by a customer
- down through the control algorithms, the code, and the hardware,
- to a difference of less than one volt, for a time period of less
- then 50 nanoseconds, on a wire at the lowest level of abstraction.
-
- My main point:
-
- The best engineers are those who move easily from
- one level of abstraction to another, and the best tools
- are those that allow such movement. Programming
- languages are no exception.
-
- The language should let you hide complexity at a lower level, but
- MUST NOT make it impossible to see that complexity when needed.
- One of the strengths of C is that you can easily make the transition
- to the next level down. One of its weaknesses is that it is often
- difficult to make the transition to the next level up. Since I do a
- lot of troubleshooting, I would rather be able to move down. If the
- problem can be solved by telling the customer to 'Read the manual,
- dummy', then fine. If not, I look at the control algorithms. If they
- are OK, I look at the C implementation, then either straight to the
- hardware, or maybe the assembly first, and so on down the line.
-
- BTW, the main reason I hate Windows is that Bill G. and company
- apparently believe that the purpose of software is to conceal and
- obfuscate what is going on at the lower levels. Drives me nuts when
- something's broke and all I get is an error message intended for
- kindergarden kids. Exactly the opposite of 'easy movement between
- levels of abstraction'.
-
- OK, OK, so my $0.02 wound up being $20.00, sorry. Thanks for
- the soapbox, perhaps I have given some food for thought.
-
- John Kasunich
- ( Full time hardware engineer, part time programmer )
-
-
-